# ————————————————————  5.2.1切片  ————————————————————
words = '敏而好学不耻下问'
print(words[0])
print(words[6])
print(words[1:6])    # 没指定步长，默认值为1
print(words[1:6:2])  # 指定步长为2
print(words[6:1:2])  # 起始索引大于结束索引，指定步长为2
print(words[::-1])
# words = '敏而好学不耻下问'
# print(words[6:1:-1])    # 指定步长为-1
# print(words[6:1:-2])    # 指定步长为-2
# print(words[1:6:-2])    # 起始索引小于结束索引，指定步长为-2


# ————————————————————  5.2.2列表  ————————————————————
# []                              # 创建空列表，列表中没有任何元素
# [1, 10, 55, 20, 6]           # 创建列表，每个元素的类型均为整型
# [10, 'word', True, 3.1415] # 创建列表，每个元素的类型均不同

# str_demo = '破釜沉舟'
# print(list(str_demo))                    # 根据字符串创建列表
# tuple_demo = (1, 3, 5, 7, 9)
# print(list(tuple_demo))                  # 根据元组创建列表
# print(list())                              # 创建空列表

# list_demo = list('破釜沉舟')
# for char in list_demo:    # 利用循环遍历列表的全部元素
#     print(char)

# nums = [11, 22, 33]
# nums[0] = 55            # 通过索引获取索引0对应的元素，并重新给元素赋值
# print(nums)
# nums[0:2] = [0, 1]     # 通过切片获取索引0、1对应的元素，并重新给这两个元素赋值
# print(nums)
# other_nums = [5, 6]
# nums += other_nums     # 通过+=向nums列表中添加other_nums列表的元素
# print(nums)

# nums = [11, 22, 33]
# nums[0:2] = [0]            # 列表[0]的长度小于nums[0:2]截取结果的长度
# print(nums)
# nums[0:2] = [10, 20, 30] # 列表[10, 20, 30]的长度大于nums[0:2]截取结果的长度
# print(nums)

# nums = [0, 5, 10, 33, 8, 19, 25, 6]
# nums.append(2)       # 在列表末尾添加元素2
# print(nums)
# nums.insert(2, 22)  # 在列表中索引2元素的前面插入元素22
# print(nums)
# nums.remove(33)      # 删除列表中指定的元素33
# print(nums)
# nums.reverse()       # 将列表的元素反转
# print(nums)
# nums.sort()           # 将列表的元素按从小到大的顺序排序
# print(nums)
# nums.clear()          # 删除列表中的所有元素
# print(nums)


# ————————————————————  5.2.3列表推导式  ————————————————————
# ls = [1, 2, 3, 4, 5, 6, 7, 8]
# new_ls = [temp * temp for temp in ls]     # 通过列表推导式构建新列表
# print(new_ls)

# new_ls = [temp for temp in ls if temp > 4]
# print(new_ls)

# new_ls = [temp if temp % 2 == 0 else temp + 1 for temp in ls]
# print(new_ls)

# ls_one = [1, 2, 3]
# ls_two = [3, 4, 5]
# ls_three = [x + y for x in ls_one for y in ls_two]
# print(ls_three)


# ————————————————————  5.2.4元组  ————————————————————
# ()                   # 创建空元组
# (1, )               # 创建包含一个元素的元组
# 1,                   # 创建包含一个元素的元组，省略括号
# (1, 2, 3)           # 创建包含多个元素的元组
# 1, 2, 3             # 创建包含多个元素的元组，省略括号

# str_demo = '破釜沉舟'
# print(tuple(str_demo))                    # 根据字符串创建元组
# list_demo = [1, 3, 5, 7, 9]
# print(tuple(list_demo))                   # 根据列表创建元组
# print(tuple())                              # 创建空元组

# x, y = (10, 20)                                     # 多个变量同步赋值
# print(x, y)
# for x, y in ((10, 20), (11, 21), (12, 22)):   # 循环遍历元组
#     print(x, y)
